//package com.hydra.auth.utils;
//
//import com.hydra.auth.entity.SysUser;
//import com.hydra.base.common.Constant;
//import io.jsonwebtoken.Jwts;
//import io.jsonwebtoken.SignatureAlgorithm;
//import org.apache.commons.lang.StringUtils;
//import org.springframework.security.core.userdetails.UserDetails;
//
//import java.util.Date;
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * JwtTokenUtil 工具类
// * @Author Hydra
// * @Date 2022/4/18 11:18
// */
//public class JwtTokenUtil extends TokenUtil {
//
//    /**
//     * 根据用户名生成token
//     */
//    public static String generateToken(SysUser user) {
//        String username = user.getUsername();
//        String code = user.getCode();
//        Map<String, Object> claims = new HashMap<>();
//        return TokenUtil.doGenerateToken(claims, code, username);
//    }
//
//    /**
//     * 校验token获取的用户名是否正确
//     * 先判断是否过期，再校验用户名
//     * @param token         token
//     * @param userDetails   用户信息
//     */
//    public static Boolean validateToken(String token, UserDetails userDetails) {
//        String username = getUsernameFromToken(token);
//        return !isTokenExpired(token) && validateUserName(username, userDetails);
//    }
//
//    /**
//     * 判断username是否是用户名、邮箱、手机号
//     */
//    private static Boolean validateUserName(String username, UserDetails userDetails){
//        if(userDetails instanceof SysUser){
//            SysUser user = (SysUser)userDetails;
//            return username.equals(user.getUsername())
//                    || (!StringUtils.isEmpty(user.getEmail()) && username.equals(user.getEmail()))
//                    || (!StringUtils.isEmpty(user.getPhone()) && username.equals(user.getPhone()));
//        }
//        return username.equals(userDetails.getUsername());
//    }
//
//}